package com.my.test.transport;

import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.MalformedURLException;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;

/**
 * 访问远程windows机器上的共享文件夹
 * 	路径格式：
 * 	例1：smb://userName:password@ip/filePath（这种情况是需要用户名密码的情况下输入的条件）
	例2：smb://ip/filePath（这种情况是不需要用户名和密码的）
	
 * @author zongbo
 *
 */
public class WindowAccess {

	public static void main(String[] args) {
        try {  
        		createRemoteFile();
        		readRemoteFile();
        		
        } catch (Exception e) {  
            e.printStackTrace();  
        }
        
	}


	/**
	 * 在远程共享文件夹内创建一个文件
	 */
	public static void createRemoteFile() {
		OutputStream os = null ;
        try {  
        		SmbFile file = new SmbFile("smb://administrator:admin=1191@192.168.1.191/开发部文件共享/test.txt");  
        		os = file.getOutputStream();
        		IOUtils.write("随便写一个啦111111".getBytes(), os);
        		
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }finally {
	        	try {
				os.flush();
				os.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
        
	}

	/**
	 * 读取远程文件夹里的文件,保存到本地
	 * @throws Exception 
	 */
	public static void readRemoteFile() throws Exception {
		SmbFile[] files = null;  
        try {  
        		SmbFile file = new SmbFile("smb://administrator:admin=1191@192.168.1.191/开发部文件共享/");  
            files = file.listFiles();  
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
        } catch (SmbException e) {  
            e.printStackTrace();  
        }
        
        for (SmbFile smbFile : files) {
            System.out.println(smbFile.getName());
            if("test.txt".equals(smbFile.getName())) {
            		//保存到本地
            		FileUtils.copyInputStreamToFile(smbFile.getInputStream(), new File("/test/test2.txt"));
//            	IOUtils.copy(input, output)
            }
        }
        
        
	}
	
}
